E-deb 파일 뜯어보기
개요
평소 OS에 설치하는 각종 패키지는 구체적으로 어떻게 세팅되는 걸까?
Istio 1기 - Istio Hands-on 스터디를 진행하면서 궁금했던 부분을 잠시 분석했다.
E-이스티오의 데이터 플레인 트래픽 세팅 원리에서 파생하여 진행했다.
deb 파일 분석
istio-sidecar 파일을 사용했는데, 이전에 결과적으로 확인해보기는 했으나 이 파일은 구체적으로 무슨 동작을 할까?
간단하게 내부 파일을 추적해보자.
deb은 ar 형식의 파일로, 먼저 파일의 압축을 해제한다.
ar x istio-sidecar.deb
내부에는 세부 압축 파일이 들어있다.
이 파일들은 deb 패키지 설치 시에 어떻게 동작하는가?
control 파일은 실제 행동하는 동작에 대한 스크립트와 메타데이터 값이 들어있다.
그리고 data 파일에는 패키지를 설치할 때 파일시스템에 들어가게 될 각종 파일들을 담고 있다.
각 tar파일을 뜯어보면 구체적으로 이들이 무엇을 하는지 알 수 있다.
tar -xf control.tar.gz
결과물은 이렇게 생겼다.
위에서 봤듯이 postinst가 data파일의 내용물이 파일시스템으로 옮겨진 후 실제 동작을 수행할 것을 추측할 수 있다.
tar -xf data.tar.gz
data 파일 안에는 var, lib, usr 세 가지 디렉토리가 들어있다.
data 파일에 실제로 사용되는 각종 파일들이 들어있고, 이들은 패키지 설치 시 각 위치에 덮어씌워질 것이다.
그럼 postinst에서는 구체적으로 무슨 동작을 하는가?
해당 파일은 쉘 스크립트로 짜여져 있기 때문에 쉽게 내용물을 확인해볼 수 있다.
보다시피 istio-proxy라는 유저와 그룹을 만들고, data 파일들에 istio-proxy로 소유권을 이관하는 작업을 수행한다.
(참고로 mkdir -p는 해당 디렉토리가 없을 경우 생성한다.)
여기에 마지막으로 추가적인 작업이 들어가는데, envoy와 pilot-agent 파일이 실행될 때의 소속을 수정하는 작업이다.
위에서 두 파일은 이미 istio-proxy로 유저와 그룹이 세팅됐다.
그러나 iptables 조작을 위해 해당 파일들은 루트 권한으로 실행돼야 한다.
그래서 어떤 유저로 실행되더라도 그룹 id는 istio-proxy로 걸어두기 위해 chmod의 맨 앞자리를 2로 설정하는 것이다!
참고로 chmod에서 맨 앞자리 특수 권한 비트는 다음의 의미를 가진다.
- 1 - sticky bit - 파일 삭제를 소유자만 가능하게 설정
- 2 - set gid
- 디렉터리라면 내부 파일이 생성될 시 디렉터리 그룹을 상속
- 파일이라면 실행될 때 그룹 id로 실행됨
- 4 - set uid
- 실행 시 소유자 id로 실행됨
아무튼 deb 패키지를 설치했을 때 설정되는 것들을 요약하자면..
- systemd에 이스티오 서비스 등록
- usr/local/bin에 엔보이와 에이전트, 실행 스크립트 세팅
- var/lib/istio에 설정 파일 세팅(이건 /etc/istio에 소프트링크된다.)
- istio-proxy 유저, 그룹 생성
이 정도가 있겠다.
처음에 세팅되는 것을 보고 혹시 istio-proxy라는 유저와 그룹이 무조건 998로 고정되는 건가 궁금해서 뜯어봤는데, 사실은 그냥 이전에 만들어진 유저가 다른 게 없어서 가장 먼저 998을 받은 거였다.
관련 문서
지식 문서, EXPLAIN
이름14 | is-folder | 생성 일자 |
---|---|---|
E-리눅스 dbeaver 설치 | false | 2024-11-26 15:36 |
restricted user namespace | - | 2024-04-27 |
Ubuntu 24.04 Noble Numbat | - | 2024-04-26 |
E-이스티오 가상머신 통합 | false | 2025-06-01 13:32 |
E-이스티오 DNS 프록시 동작 | false | 2025-06-01 12:33 |
E-이스티오에서 엔보이 기능 확장하기 | false | 2025-06-01 14:06 |
E-이스티오 메시 스케일링 | false | 2025-06-08 23:41 |
메시 배포 모델 | false | 2025-05-21 13:36 |
Istio WorkloadGroup | false | 2025-05-26 09:27 |
Istio WorkloadEntry | false | 2025-05-26 09:32 |
Istio WasmPlugin | false | 2025-04-21 20:41 |
Istio Extenisibility | true | 2025-05-26 09:26 |
Istio EnvoyFilter | false | 2025-04-21 20:36 |
E-이스티오의 데이터 플레인 트래픽 세팅 원리 | false | 2025-05-27 21:55 |
기타 문서
Z0-연관 knowledge, Z1-트러블슈팅 Z2-디자인,설계, Z3-임시, Z5-프로젝트,아카이브, Z8,9-미분류,미완이름7 | 코드 | 타입 | 생성 일자 |
---|---|---|---|
S-오라클 600 에러 트러블 슈팅(한글 인코딩) | Z1 | topic/shooting | 2024-11-27 12:15 |
8W - 엔보이와 iptables 뜯어먹기 | Z8 | published | 2025-06-01 12:14 |
엔보이에 와즘 플러그인 적용해보기 | Z8 | topic | 2025-06-09 02:29 |
4W - 이스티오 메트릭 커스텀, 프로메테우스와 그라파나 | Z8 | published | 2025-05-03 22:16 |
7W - 이스티오 메시 스케일링 | Z8 | published | 2025-06-09 02:04 |
7W - 엔보이 필터를 통한 기능 확장 | Z8 | published | 2025-06-09 02:30 |
8W - 가상머신 통합하기 | Z8 | published | 2025-06-01 12:11 |